// 系统功能请求类型定义和处理逻辑

// 系统功能请求类型常量 - 前端主动发起的功能请求
export const SYSTEM_REQUEST_TYPES = {
  SUMMARY_REQUEST: "__SUMMARY_REQUEST__",
  // 后续可以添加更多系统功能类型，如：
  // EXPORT_REQUEST: "__EXPORT_REQUEST__",
  // TRANSLATE_REQUEST: "__TRANSLATE_REQUEST__",
} as const;

// 基础的系统请求消息格式
export interface BaseSystemRequest {
  type: string;
  [key: string]: any;
}

// 总结请求消息
export interface SummaryRequestMessage extends BaseSystemRequest {
  type: typeof SYSTEM_REQUEST_TYPES.SUMMARY_REQUEST;
  dataType: "product" | "html";
  content: string;
}

// 所有支持的系统请求消息类型
export type SystemRequestMessage = SummaryRequestMessage;

// 创建总结请求
export function createSummaryRequestMessage(
  dataType: "product" | "html",
  content: string,
): SummaryRequestMessage {
  return {
    type: SYSTEM_REQUEST_TYPES.SUMMARY_REQUEST,
    dataType,
    content,
  };
}

// 解析系统请求消息
export function parseSystemRequestMessage(
  content: string,
): SystemRequestMessage | null {
  try {
    if (content.startsWith("{")) {
      const parsed = JSON.parse(content);
      if (
        parsed.type &&
        Object.values(SYSTEM_REQUEST_TYPES).includes(parsed.type)
      ) {
        return parsed as SystemRequestMessage;
      }
    }
  } catch (e) {
    console.error("Failed to parse system request message:", e);
  }
  return null;
}

// 检查是否是系统请求
export function isSystemRequest(content: string): boolean {
  const message = parseSystemRequestMessage(content);
  return message !== null;
}

// 为系统请求生成用户友好的显示文本
export function formatSystemRequestForDisplay(
  message: SystemRequestMessage,
): string {
  switch (message.type) {
    case SYSTEM_REQUEST_TYPES.SUMMARY_REQUEST:
      const summaryMsg = message as SummaryRequestMessage;
      return `请为我生成${summaryMsg.dataType === "html" ? "行程" : "产品"}总结`;

    default:
      return "发送系统请求";
  }
}
